package main

import (
	"fmt"
	beego "github.com/beego/beego/v2/server/web"
	"ksd-social-api/commons/filter"
	"ksd-social-api/commons/global"
	"ksd-social-api/commons/initilization"
	_ "ksd-social-api/modules"
	"ksd-social-api/utils/rdb"
)

func main() {
	//1：记录环境信息
	global.Env = beego.BConfig.RunMode
	//2：设定环境的日志级别，默认是prod环境下的error级别，意思就是：只有程序报错了才会进行日志写入到文件和控制台中。
	loggerLevel := "error"
	// 根据环境来设置日志级别
	if global.Env == "dev" {
		// 如果是开发环境，我们要方便调试我们代码。所以建议使用debug或者info都可以
		loggerLevel = "debug"
	}
	//3：解析自定义的配置文件
	initilization.InitMyConfig()
	//4：初始化zap日志
	initilization.InitLogger(loggerLevel)
	//5：初始化redis
	initilization.InitRedis()
	//6: 初始化数据库
	initilization.InitMYSQL()
	//7: 打印路由信息
	//在开发环境可以使用打印把定义和初始化成功的路由全部打印出来，方便你查询和确认你定义的路由是否生效
	if global.Env == "dev" {
		tree := beego.PrintTree()
		methods := tree["Data"].(beego.M)
		for k, v := range methods {
			fmt.Printf("%s => %v\n", k, v)
		}
	}

	//8: 启动定时任务
	//taskjob.InitTask()
	//task.StartTask()
	// web接口 - corsfilter----loginfilter---------logfilter
	// 全局拦截器--跨域问题
	beego.InsertFilter("/api/v1/*", beego.BeforeRouter, filter.CorsFilter)
	// 全局拦截器--登录拦截
	beego.InsertFilter("/api/v1/*", beego.BeforeRouter, filter.LoginFilter)
	// 全局拦截器--日志拦截
	beego.InsertFilter("/api/v1/*", beego.BeforeRouter, filter.LogFilter)

	rdb.RdbSet("name", "xiaoli")
	rdb.RdbSet("age", "16")
	fmt.Println(rdb.RdbGet("name"))
	fmt.Println(rdb.RdbGet("age"))

	//9: beego框架的运行和启动
	beego.Run()
}
